﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BibliotecasDeBase.AccesoADatos;
using System.Collections;
using System.Data;

/// <summary>
/// Descripción breve de ComentarioServices
/// </summary>
public class ComentarioServices
{

      Ado ado;

	public ComentarioServices()
	{
        ado = new Ado();
	}

    ~ComentarioServices()
    {
        ado = null;
    }


    public Comentario ComentarPost(int UsuarioId, string Comentario, int PostId)
    {
        //valido que no tenga datos vacios
        if (UsuarioId > 0 && Comentario != "" && PostId > 0)
        {
            ArrayList ParametrosComentario = new ArrayList();
            ParametrosComentario.Add(UsuarioId);
            ParametrosComentario.Add(Comentario);
            ParametrosComentario.Add(PostId);

            ado.EjecutarStoredProcedure(false, "Comentario_InsertarComentario", ParametrosComentario);
            ado.EjecutarStoredProcedure(false, "Comentario_GetComentarioIngresado", null);

            DataRow row = ado.DevolverDataTable().Rows[0];
            Comentario comentario = CrearComentarioDesdeRow(row);
            return comentario;
        }
        else
            return null;
    }


    public List<Comentario> BuscarComentarios(int postId)
    {
        ArrayList ParametrosComentario = new ArrayList();
        ParametrosComentario.Add(postId);

        ado.EjecutarStoredProcedure(false, "Comentario_BuscarComentarioPorIdPost", ParametrosComentario);

        DataTable table = ado.DevolverDataTable();
        List<Comentario> comentarios = new List<Comentario>();
        foreach (DataRow row in table.Rows)
        {
            comentarios.Add(CrearComentarioDesdeRow(row));

        }
        return comentarios;
    }

    private Comentario CrearComentarioDesdeRow(DataRow row)
    {
        Comentario comentario = new Comentario();
        comentario.Id = Convert.ToInt32(row["id_comentario"]);
        comentario.IdPost = Convert.ToInt32(row["post_id"]);
        comentario.IdUsuario = Convert.ToInt32(row["usuario_id"]);
        comentario.TextoComentario = row["texto_comentario"].ToString();
        if (row["url_foto_perfil"].ToString() != "" && row["url_foto_perfil"] != null)
            comentario.UrlPhotoPerfil = row["url_foto_perfil"].ToString();
        else
            comentario.UrlPhotoPerfil = "../Images/PerfilDefault.jpg";
        comentario.Nombre = row["nombre"].ToString();
        comentario.Apellido = row["apellido"].ToString();
        return comentario;
    }

    internal void BorrarComentario(int comentarioId)
    {
        ArrayList ParametrosComentario = new ArrayList();
        ParametrosComentario.Add(comentarioId);

        ado.EjecutarStoredProcedure(true, "Comentario_BorrarComentario", ParametrosComentario);
    }
}